import logging
from controller import cad_controller
from inventor_engine.inventor_manager import InventorManager

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    handlers=[
        logging.FileHandler("log/cad_assistant.log"),
        logging.StreamHandler()
    ]
)
logger = logging.getLogger("Main")


class CommentUI:
    def __init__(self, ai):
        # 初始化带故障转移的AI客户端
        self.ai = ai

        self.cad = cad_controller.CadController(self.ai)
        self.inventor_manager = InventorManager()

    def _print_mean(self):
        """打印菜单"""
        print("""
        \nAutoCAD AI助手 专业版
            支持命令：
            1. 绘制 [描述]    - 生成并执行图形
            2. 优化           - 分析当前设计
            3. 检查           - 执行GB标准检查
            4. 标注           - 自动生成智能标注
            5. 材料 [名称]    - 设置当前材料
            6. 帮助 [问题]    - 获取工程知识
            7. 切换服务       - 手动切换AI服务
            8. 三维建模        - 根据打开的DWG文件创建三维模型
            9. 修缮建模 [描述] - 使用自然语言交互修缮建模
            10. 模型分析       - 使用Inventor内置的分析功能并生成报告
            11. 退出
            """)

    def interactive_loop(self):
        """命令行交互界面"""
        self._print_mean()

        while True:
            try:
                command = input("\n>>> 请输入指令：").strip()

                if not command:
                    continue

                if command.startswith("绘制"):
                    self.cad.handle_drawing(command[2:].strip())
                elif command == "优化":
                    self.cad.optimize_design()
                elif command == "检查":
                    self.cad.perform_checks()
                elif command == "标注":
                    self.cad.auto_dimension()
                elif command.startswith("材料"):
                    self.cad.set_material(command[2:].strip())
                elif command.startswith("帮助"):
                    self.cad.get_help(command[2:].strip())
                elif command == "切换服务":
                    self.cad.switch_service()
                elif command == "三维建模":
                    self.cad.create_3d_model()
                elif command.startswith("修缮建模"):
                    self._modify_3d_model(command[4:].strip())
                elif command == "模型分析":
                    self._analyze_3d_model()
                elif command == "退出":
                    break
                else:
                    print("未知命令，请输入'帮助'查看使用说明")

            except Exception as e:
                logger.error("操作执行失败：%s", str(e))
                print(f"错误：{str(e)}")




    def _modify_3d_model(self, description: str):
        """使用自然语言交互修缮建模"""
        self.inventor_manager.modify_model(description)

    def _analyze_3d_model(self):
        """使用Inventor内置的分析功能并生成报告"""
        self.inventor_manager.analyze_model()


